security_check();
if ($resultat_session == 'c') {
header("Location: ../utilisateurs/mon_compte.php?change_mdp=yes");
die();
} else if ($resultat_session == '0') {
header("Location: ../logout.php?auto=1");
die();
}
if (!checkAccess()) {
header("Location: ../logout.php?auto=1");
die();
}
// Initialisation des variables
$user_login = isset($_POST["user_login"]) ? $_POST["user_login"] : (isset($_GET["user_login"]) ? $_GET["user_login"] : NULL);
$msg = '';
$journal_connexions=isset($_POST['journal_connexions']) ? $_POST['journal_connexions'] : (isset($_GET['journal_connexions']) ? $_GET['journal_connexions'] : 'n');
$duree=isset($_POST['duree']) ? $_POST['duree'] : NULL;
// fonction de sécuritée
// uid de pour ne pas refaire renvoyer plusieurs fois le même formulaire
// autoriser la validation de formulaire $uid_post===$_SESSION['uid_prime']
if(empty($_SESSION['uid_prime'])) {
$_SESSION['uid_prime']='';
}
if (empty($_GET['uid_post']) and empty($_POST['uid_post'])) {
$uid_post='';
}
else {
if (isset($_GET['uid_post'])) {
$uid_post=$_GET['uid_post'];
}
if (isset($_POST['uid_post'])) {
$uid_post=$_POST['uid_post'];
}
}
$uid = md5(uniqid(microtime(), 1));
// on remplace les %20 par des espaces
$uid_post = preg_replace('/%20/',' ',$uid_post);
if($uid_post===$_SESSION['uid_prime']) {
$valide_form = 'oui';
}
else {
$valide_form = 'non';
}
$_SESSION['uid_prime'] = $uid;
// fin de la fonction de sécurité
// fin pour module trombinoscope
$auth_sso=getSettingValue("auth_sso") ? getSettingValue("auth_sso") : "";
$gepi_non_plugin_lcs_mais_recherche_ldap=false;
if((getSettingAOui('gepi_non_plugin_lcs_mais_recherche_ldap'))&&(file_exists("../secure/config_ldap.inc.php"))) {
include("../secure/config_ldap.inc.php");
$lcs_ldap_base_dn=$ldap_base_dn;
$lcs_ldap_host=$ldap_host;
$lcs_ldap_port=$ldap_port;
$gepi_non_plugin_lcs_mais_recherche_ldap=true;
$lcs_ldap_people_dn = 'ou=people,'.$lcs_ldap_base_dn;
$lcs_ldap_groups_dn = 'ou=groups,'.$lcs_ldap_base_dn;
}
if (isset($_POST['valid']) and ($_POST['valid'] == "yes")) {
check_token();
//------------------------------------------------------
//--- Partie retirée par Thomas Belliard
// Cas LCS : on teste s'il s'agit d'un utilisateur local ou non
// if (getSettingValue("use_sso") == "lcs"){
// if ($_POST['is_lcs'] == "y") {
// $is_pwd = 'n';
// }
// else {
// $is_pwd = 'y';
// }
// }elseif(getSettingValue("use_sso") == 'cas'){
//
// $is_pwd = 'n';
//
// }
// else {
// $is_pwd = "y";
// }
//------------------------------------------------------
// On teste si on doit enregistrer un mot de passe ou non :
if ($_POST['reg_auth_mode'] == "gepi" || $gepiSettings['ldap_write_access'] == "yes") {
$is_pwd = "y";
} else {
$is_pwd = "n";
}
if ($_POST['reg_nom'] == '') {
$msg.="Veuillez entrer un nom pour l'utilisateur !";
}
else {
$k = 0;
while ($k < $_POST['max_mat']) {
$temp = "matiere_".$k;
$reg_matiere[$k] = $_POST[$temp];
$k++;
}
//
// actions si un nouvel utilisateur a été défini
//
$temoin_ajout_ou_modif_ok="n";
if ((isset($_POST['new_login'])) and ($_POST['new_login']!='') and (preg_match("/^[a-zA-Z_]{1}[a-zA-Z0-9_.]{0,".($longmax_login-1)."}$/", $_POST['new_login'])) ) {
// Modif Thomas : essayons d'accepter des logins sensibles à la casse, pour mieux s'adapter aux sources externes (LDAP).
//$_POST['new_login'] = strtoupper($_POST['new_login']);
$reg_password_c = md5($NON_PROTECT['password1']);
$resultat = "";
if (($_POST['no_anti_inject_password1'] != $_POST['reg_password2']) and ($is_pwd == "y")) {
$msg.="Erreur lors de la saisie : les deux mots de passe ne sont pas identiques, veuillez recommencer !";
} else if ((!(verif_mot_de_passe($_POST['no_anti_inject_password1'],0))) and ($is_pwd == "y")) {
$msg.="Erreur lors de la saisie du mot de passe (voir les recommandations), veuillez recommencer !";
if((isset($info_verif_mot_de_passe))&&($info_verif_mot_de_passe!="")) {$msg.="
".$info_verif_mot_de_passe;}
} else {
// Le teste suivant détecte si un utilisateur existe avec le même login (insensible à la casse)
$test = mysqli_query($GLOBALS["mysqli"], "SELECT login FROM utilisateurs WHERE (login = '".$_POST['new_login']."' OR login = '".strtoupper($_POST['new_login'])."')");
$nombreligne = mysqli_num_rows($test);
if ($nombreligne != 0) {
$resultat = "NON";
$msg.="*** Attention ! Un utilisateur ayant le même identifiant existe déjà. Enregistrement impossible ! ***";
}
if ($resultat != "NON") {
// On enregistre l'utilisateur
// Si on a activé l'accès LDAP en écriture, on commence par ça.
// En cas d'échec, l'enregistrement ne sera pas poursuivi.
// On ne continue que si le LDAP est configuré en écriture, qu'on a activé
// l'auth LDAP ou SSO, et que c'est un de ces deux modes qui a été choisi pour cet utilisateur.
if (LDAPServer::is_setup() && $gepiSettings["ldap_write_access"] == "yes" && ($session_gepi->auth_ldap || $session_gepi->auth_sso) && ($_POST['reg_auth_mode'] == 'ldap' || $_POST['reg_auth_mode'] == 'sso')) {
$write_ldap = true;
$write_ldap_success = false;
// On tente de créer l'utilisateur sur l'annuaire LDAP
$ldap_server = new LDAPServer();
if ($ldap_server->test_user($_POST['new_login'])) {
// L'utilisateur a été trouvé dans l'annuaire. On ne l'enregistre pas.
$write_ldap_success = true;
$msg.= "L'utilisateur n'a pas pu être ajouté à l'annuaire LDAP, car il y est déjà présent. Il va néanmoins être créé dans la base Gepi.";
} else {
$write_ldap_success = $ldap_server->add_user($_POST['new_login'], $_POST['reg_nom'], $_POST['reg_prenom'], $_POST['reg_email'], $_POST['reg_civilite'], $NON_PROTECT['password1'], $_POST['reg_statut']);
}
} else {
$write_ldap = false;
}
$sql_ajout_chaine_numind_et_type="";
if((isset($_POST['reg_numind']))&&($_POST['reg_numind']!="")) {
$reg_numind=preg_replace("/[^0-9]/","",trim($_POST['reg_numind']));
if($_POST['reg_statut']=="professeur") {
$reg_numind="P".$reg_numind;
}
$sql="SELECT 1=1 FROM utilisateurs WHERE numind='".$reg_numind."' AND login!='".$_POST['new_login']."';";
$test=mysqli_query($GLOBALS["mysqli"], $sql);
if(mysqli_num_rows($test)==0) {
$sql_ajout_chaine_numind_et_type.=", numind='".$reg_numind."'";
}
else {
$msg.="Identifiant STS déjà attribué à un autre utilisateur.
";
}
}
if((isset($_POST['reg_type']))&&(in_array($_POST['reg_type'], array('epp', 'local')))) {
$sql_ajout_chaine_numind_et_type.=", type='".$_POST['reg_type']."'";
}
# On poursuit si le LDAP s'est bien passé (ou bien si on n'avait rien à faire avec...)
if (!$write_ldap or ($write_ldap && $write_ldap_success)) {
// Ensuite, on enregistre dans la base, en distinguant selon le type d'authentification.
if ($_POST['reg_auth_mode'] == "gepi") {
// On enregistre le mot de passe
$sql="INSERT INTO utilisateurs SET nom='".$_POST['reg_nom']."',prenom='".$_POST['reg_prenom']."',civilite='".$_POST['reg_civilite']."',login='".$_POST['new_login']."',password='$reg_password_c',statut='".$_POST['reg_statut']."',email='".$_POST['reg_email']."', auth_mode = '".$_POST['reg_auth_mode']."',etat='actif', change_mdp='y'";
} else {
// Auth LDAP ou SSO, pas de mot de passe.
$sql="INSERT INTO utilisateurs SET nom='".$_POST['reg_nom']."',prenom='".$_POST['reg_prenom']."',civilite='".$_POST['reg_civilite']."',login='".$_POST['new_login']."',password='',statut='".$_POST['reg_statut']."',email='".$_POST['reg_email']."', auth_mode = '".$_POST['reg_auth_mode']."',etat='actif', change_mdp='n'";
}
$sql.=$sql_ajout_chaine_numind_et_type;
$reg_data = mysqli_query($GLOBALS["mysqli"], $sql);
if ($_POST['reg_statut'] == "professeur") {
$del = mysqli_query($GLOBALS["mysqli"], "DELETE FROM j_professeurs_matieres WHERE id_professeur = '".$_POST['new_login']."'");
$m = 0;
while ($m < $_POST['max_mat']) {
if ($reg_matiere[$m] != '') {
$test = mysqli_query($GLOBALS["mysqli"], "SELECT * FROM j_professeurs_matieres WHERE (id_professeur = '".$_POST['new_login']."' and id_matiere = '$reg_matiere[$m]')");
$resultat = mysqli_num_rows($test);
if ($resultat == 0) {
$reg = mysqli_query($GLOBALS["mysqli"], "INSERT INTO j_professeurs_matieres SET id_professeur = '".$_POST['new_login']."', id_matiere = '$reg_matiere[$m]', ordre_matieres = '0'");
}
}
$reg_matiere[$m] = '';
$m++;
}
}
$msg.="Vous venez de créer un nouvel utilisateur !
Par défaut, cet utilisateur est considéré comme actif.";
//$msg = $msg."
Pour imprimer les paramètres de l'utilisateur (identifiant, mot de passe, ...), cliquez ici !";
$msg.="
Pour imprimer les paramètres de l'utilisateur (identifiant, mot de passe, ...), cliquez ici !";
$msg.="
Attention : ultérieurement, il vous sera impossible d'imprimer à nouveau le mot de passe d'un utilisateur ! ";
$user_login = $_POST['new_login'];
$temoin_ajout_ou_modif_ok="y";
}
if((getSettingAOui('sso_cas_table'))&&(isset($_POST['login_sso']))) {
$enregistrer_sso_corresp="y";
if($_POST['login_sso']!="") {
$sql="SELECT login_gepi FROM sso_table_correspondance WHERE login_sso='".$_POST['login_sso']."' AND login_gepi!='".$_POST['new_login']."';";
$res_sso=mysqli_query($GLOBALS["mysqli"], $sql);
if(mysqli_num_rows($res_sso)>0) {
$lig_sso=mysqli_fetch_object($res_sso);
$sql="SELECT * FROM utilisateurs WHERE login='".$lig_sso->login_gepi."';";
$test_user=mysqli_query($GLOBALS["mysqli"], $sql);
if(mysqli_num_rows($test_user)>0) {
$lig_user=mysqli_fetch_object($test_user);
$msg.="ANOMALIE : La correspondance SSO proposée ".$_POST['login_sso']." est déjà attribuée ";
if($lig_user->statut=="eleve") {
$msg.=" à l'élève ".$lig_sso->login_gepi."";
}
elseif($lig_user->statut=="responsable") {
$msg.=" au responsable ".$lig_sso->login_gepi."";
}
else {
$msg.=" au personnel ".$lig_sso->login_gepi."";
}
$msg.="
Vous devriez faire le ménage pour ne conserver qu'une seule association.
";
$enregistrer_sso_corresp="n";
}
else {
$sql="DELETE FROM sso_table_correspondance WHERE login_gepi='".$lig_sso->login_gepi."';";
$menage=mysqli_query($GLOBALS["mysqli"], $sql);
$msg.="Suppression d'une scorie :
La correspondance SSO proposée ".$_POST['login_sso']." était associée au login ".$lig_sso->login_gepi." qui n'existe plus dans la table 'utilisateurs'.
";
}
}
}
if($enregistrer_sso_corresp=="y") {
$sql="SELECT login_sso FROM sso_table_correspondance WHERE login_gepi='".$_POST['new_login']."';";
$res_sso=mysqli_query($GLOBALS["mysqli"], $sql);
if(mysqli_num_rows($res_sso)>0) {
$lig_sso=mysqli_fetch_object($res_sso);
if($lig_sso->login_sso!=$_POST['login_sso']) {
$sql="UPDATE sso_table_correspondance SET login_sso='".$_POST['login_sso']."' WHERE login_gepi='".$_POST['new_login']."';";
$update=mysqli_query($GLOBALS["mysqli"], $sql);
if(!$update) {
$msg.="Erreur lors de la mise à jour de la correspondance SSO.
";
}
}
}
else {
$sql="INSERT INTO sso_table_correspondance SET login_sso='".$_POST['login_sso']."', login_gepi='".$_POST['new_login']."';";
$insert=mysqli_query($GLOBALS["mysqli"], $sql);
if(!$insert) {
$msg.="Erreur lors de l'enregistrement de la correspondance SSO.
";
}
}
}
}
}
}
if($temoin_ajout_ou_modif_ok=="y") {
if ($_POST['reg_statut']=='scolarite'){
$sql="SELECT c.id FROM classes c;";
$res_liste_classes=mysqli_query($GLOBALS["mysqli"], $sql);
if(mysqli_num_rows($res_liste_classes)>0){
while($ligtmp=mysqli_fetch_object($res_liste_classes)) {
$sql="INSERT INTO j_scol_classes SET id_classe='$ligtmp->id', login='".$_POST['new_login']."';";
$insert=mysqli_query($GLOBALS["mysqli"], $sql);
if(!$insert){
$msg.="
Erreur lors de l'association avec la classe ".get_class_from_id($ligtmp->id);
}
}
}
}
}
}
//
//action s'il s'agit d'une modification
//
else if ((isset($user_login)) and ($user_login!='')) {
// On regarde quel est le format du login, majuscule ou minuscule...
$test = sql_count(sql_query("SELECT login FROM utilisateurs WHERE (login = '".$user_login."')"));
if ($test == "0") $user_login = strtoupper($user_login);
if (isset($_POST['deverrouillage'])) {
$reg_data = sql_query("UPDATE utilisateurs SET date_verrouillage=now() - interval " . getSettingValue("temps_compte_verrouille") . " minute WHERE (login='".$user_login."')");
}
// Si on change le mode d'authentification, il faut quelques opérations particulières
$old_auth_mode = old_mysql_result(mysqli_query($GLOBALS["mysqli"], "SELECT auth_mode FROM utilisateurs WHERE login = '".$user_login."'"), 0);
if ($old_auth_mode == "gepi" && ($_POST['reg_auth_mode'] == "ldap" || $_POST['reg_auth_mode'] == "sso")) {
// On passe du mode Gepi à un mode externe : il faut supprimer le mot de passe
$oldmd5password = old_mysql_result(mysqli_query($GLOBALS["mysqli"], "SELECT password FROM utilisateurs WHERE login = '".$user_login."'"), 0);
// 20140301
if(!getSettingAOui('auth_sso_ne_pas_vider_MDP_gepi')) {
mysqli_query($GLOBALS["mysqli"], "UPDATE utilisateurs SET password = '', salt = '' WHERE login = '".$user_login."'");
}
$msg.="Passage à un mode d'authentification externe : ";
// Et si on a un accès en écriture au LDAP, il faut créer l'utilisateur !
if ($gepiSettings['ldap_write_access'] == "yes") {
$create_ldap_user = true;
$msg .= "le mot de passe de l'utilisateur est inchangé.
";
} else {
if(!getSettingAOui('auth_sso_ne_pas_vider_MDP_gepi')) {
$msg .= "le mot de passe de l'utilisateur a été effacé.
";
}
else {
$msg .= "le mot de passe de l'utilisateur a été conservé.
";
}
}
} elseif (($old_auth_mode == "sso" || $old_auth_mode == "ldap") && $_POST['reg_auth_mode'] == "gepi") {
// On passe d'un mode externe à un mode Gepi. On prévient l'admin qu'il faut modifier le mot de passe.
$msg = "Passage d'un mode d'authentification externe à un mode local : le mot de passe de l'utilisateur *doit* être réinitialisé.
";
// Et si accès en écriture au LDAP, on supprime le compte.
if ($gepiSettings['ldap_write_access'] == "yes" && (!isset($_POST['prevent_ldap_removal']) or $_POST['prevent_ldap_removal'] != "yes")) {
$delete_ldap_user = true;
}
}
$change = "yes";
$flag = '';
if ($_POST['reg_statut'] != "professeur") {
$test = mysqli_query($GLOBALS["mysqli"], "SELECT * FROM j_groupes_professeurs WHERE (login='".$user_login."')");
$nb = mysqli_num_rows($test);
if ($nb != 0) {
$msg.="Impossible de changer le statut. Cet utilisateur est actuellement professeur dans certaines classes !";
$change = "no";
} else {
$k = 0;
while ($k < $_POST['max_mat']) {
$reg_matiere[$k] = '';
$k++;
}
}
}
if ($_POST['reg_statut'] == "professeur") {
//$test = mysql_query("SELECT jgm.id_matiere FROM j_groupes_professeurs jgp, j_groupes_matieres jgm WHERE (" .
$test = mysqli_query($GLOBALS["mysqli"], "SELECT DISTINCT(jgm.id_matiere) FROM j_groupes_professeurs jgp, j_groupes_matieres jgm WHERE (" .
"jgp.login = '".$user_login."' and " .
"jgm.id_groupe = jgp.id_groupe)");
$nb = mysqli_num_rows($test);
if ($nb != 0) {
$k = 0;
$change = "yes";
while ($k < $nb) {
// ===============
// Pour chaque matière associée au prof, on réinitialise le témoin:
$flag="no";
// ===============
$id_matiere = old_mysql_result($test, $k, 'id_matiere');
//echo "\$k=$k
";
//echo "\$id_matiere=$id_matiere
";
$m = 0;
while ($m < $_POST['max_mat']) {
//echo "\$m=$m - \$id_matiere=$id_matiere - \$reg_matiere[$m]=$reg_matiere[$m]";
if ($id_matiere == $reg_matiere[$m]) {
$flag = "yes";
}
//if(isset($flag)){echo " \$flag=$flag";}
//echo "
";
$m++;
}
if ($flag != "yes") {
$change = "no";
}
$k++;
}
if ($change == "no") {
$msg.="Impossible de changer les matières. Cet utilisateur est actuellement professeur dans certaines classes des matières que vous voulez supprimer !";
}
}
}
if ($change == "yes") {
// Variable utilisée pour la partie photo:
$temoin_ajout_ou_modif_ok="y";
$sql="SELECT statut FROM utilisateurs WHERE login='$user_login';";
$res_statut_user=mysqli_query($GLOBALS["mysqli"], $sql);
$lig_tmp=mysqli_fetch_object($res_statut_user);
// Si l'utilisateur était CPE, il faut supprimer les associations dans la table j_eleves_cpe
if($lig_tmp->statut=="cpe"){
if($_POST['reg_statut']!="cpe"){
$sql="DELETE FROM j_eleves_cpe WHERE cpe_login='$user_login';";
$nettoyage=mysqli_query($GLOBALS["mysqli"], $sql);
}
}
// Si l'utilisateur était SCOLARITE, il faut supprimer les associations dans la table j_scol_classes
if($lig_tmp->statut=="scolarite"){
if($_POST['reg_statut']!="scolarite"){
$sql="DELETE FROM j_scol_classes WHERE login='$user_login';";
$nettoyage=mysqli_query($GLOBALS["mysqli"], $sql);
}
}
// On effectue les opérations LDAP
if (isset($create_ldap_user) && $create_ldap_user) {
$ldap_server = new LDAPServer;
if ($ldap_server->test_user($user_login)) {
// L'utilisateur a été trouvé dans l'annuaire. On ne l'enregistre pas.
$write_ldap_success = true;
$msg.= "L'utilisateur n'a pas pu être ajouté à l'annuaire LDAP, car il y est déjà présent.
";
} else {
$write_ldap_success = $ldap_server->add_user($user_login, $_POST['reg_nom'], $_POST['reg_prenom'], $_POST['reg_email'], $_POST['reg_civilite'], md5(rand()), $_POST['reg_statut']);
// On transfert le mot de passe à la main
$ldap_server->set_manual_password($user_login, "{MD5}".base64_encode(pack("H*",$oldmd5password)));
}
}
if (isset($delete_ldap_user) && $delete_ldap_user) {
$ldap_server = new LDAPServer;
if (!$ldap_server->test_user($user_login)) {
// L'utilisateur n'a pas été trouvé dans l'annuaire.
$write_ldap_success = true;
} else {
$write_ldap_success = $ldap_server->delete_user($user_login);
}
}
$sql_ajout_chaine_numind_et_type="";
if(isset($_POST['reg_numind'])) {
if($_POST['reg_numind']!="") {
$reg_numind=preg_replace("/[^0-9]/","",trim($_POST['reg_numind']));
if($_POST['reg_statut']=="professeur") {
$reg_numind="P".$reg_numind;
}
$sql="SELECT 1=1 FROM utilisateurs WHERE numind='".$reg_numind."' AND login!='".$user_login."';";
$test=mysqli_query($GLOBALS["mysqli"], $sql);
if(mysqli_num_rows($test)==0) {
$sql_ajout_chaine_numind_et_type.=", numind='".$reg_numind."'";
}
else {
$msg.="Identifiant STS déjà attribué à un autre utilisateur.
";
}
}
else {
$sql="UPDATE utilisateurs SET numind='' WHERE login='".$user_login."';";
$update=mysqli_query($GLOBALS["mysqli"], $sql);
if(!$update) {
$msg.="Erreur lors de la suppression de l'identifiant STS.
";
}
}
}
if((isset($_POST['reg_type']))&&(in_array($_POST['reg_type'], array('epp', 'local')))) {
$sql_ajout_chaine_numind_et_type.=", type='".$_POST['reg_type']."'";
}
$reg_data = mysqli_query($GLOBALS["mysqli"], "UPDATE utilisateurs SET nom='".$_POST['reg_nom']."',prenom='".$_POST['reg_prenom']."',civilite='".$_POST['reg_civilite']."', login='".$_POST['reg_login']."',statut='".$_POST['reg_statut']."',email='".$_POST['reg_email']."',etat='".$_POST['reg_etat']."',auth_mode='".$_POST['reg_auth_mode']."'".$sql_ajout_chaine_numind_et_type." WHERE login='".$user_login."'");
$del = mysqli_query($GLOBALS["mysqli"], "DELETE FROM j_professeurs_matieres WHERE id_professeur = '".$user_login."'");
$m = 0;
while ($m < $_POST['max_mat']) {
$num=$m+1;
if ($reg_matiere[$m] != '') {
$test = mysqli_query($GLOBALS["mysqli"], "SELECT * FROM j_professeurs_matieres WHERE (id_professeur = '".$user_login."' and id_matiere = '$reg_matiere[$m]')");
$resultat = mysqli_num_rows($test);
if ($resultat == 0) {
$reg = mysqli_query($GLOBALS["mysqli"], "INSERT INTO j_professeurs_matieres SET id_professeur = '".$user_login."', id_matiere = '$reg_matiere[$m]', ordre_matieres = '$num'");
}
$reg_matiere[$m] = '';
}
$m++;
}
if (!$reg_data) {
$msg.="Erreur lors de l'enregistrement des données.
";
} else {
$msg.="Les modifications ont bien été enregistrées !
";
}
if((getSettingAOui('sso_cas_table'))&&(isset($_POST['login_sso']))) {
$enregistrer_sso_corresp="y";
if($_POST['login_sso']!="") {
$sql="SELECT login_gepi FROM sso_table_correspondance WHERE login_sso='".$_POST['login_sso']."' AND login_gepi!='$user_login';";
$res_sso=mysqli_query($GLOBALS["mysqli"], $sql);
if(mysqli_num_rows($res_sso)>0) {
$lig_sso=mysqli_fetch_object($res_sso);
$sql="SELECT * FROM utilisateurs WHERE login='".$lig_sso->login_gepi."';";
$test_user=mysqli_query($GLOBALS["mysqli"], $sql);
if(mysqli_num_rows($test_user)>0) {
$lig_user=mysqli_fetch_object($test_user);
$msg.="ANOMALIE : La correspondance SSO proposée ".$_POST['login_sso']." est déjà attribuée ";
if($lig_user->statut=="eleve") {
$msg.=" à l'élève ".$lig_sso->login_gepi."";
}
elseif($lig_user->statut=="responsable") {
$msg.=" au responsable ".$lig_sso->login_gepi."";
}
else {
$msg.=" au personnel ".$lig_sso->login_gepi."";
}
$msg.="
Vous devriez faire le ménage pour ne conserver qu'une seule association.
";
$enregistrer_sso_corresp="n";
}
else {
$sql="DELETE FROM sso_table_correspondance WHERE login_gepi='".$lig_sso->login_gepi."';";
$menage=mysqli_query($GLOBALS["mysqli"], $sql);
$msg.="Suppression d'une scorie :
La correspondance SSO proposée ".$_POST['login_sso']." était associée au login ".$lig_sso->login_gepi." qui n'existe plus dans la table 'utilisateurs'.
";
}
}
}
if($enregistrer_sso_corresp=="y") {
$sql="SELECT login_sso FROM sso_table_correspondance WHERE login_gepi='$user_login';";
$res_sso=mysqli_query($GLOBALS["mysqli"], $sql);
if(mysqli_num_rows($res_sso)>0) {
$lig_sso=mysqli_fetch_object($res_sso);
if($lig_sso->login_sso!=$_POST['login_sso']) {
$sql="UPDATE sso_table_correspondance SET login_sso='".$_POST['login_sso']."' WHERE login_gepi='$user_login';";
$update=mysqli_query($GLOBALS["mysqli"], $sql);
if(!$update) {
$msg.="Erreur lors de la mise à jour de la correspondance SSO.
";
}
}
}
else {
$sql="INSERT INTO sso_table_correspondance SET login_sso='".$_POST['login_sso']."', login_gepi='$user_login';";
$insert=mysqli_query($GLOBALS["mysqli"], $sql);
if(!$insert) {
$msg.="Erreur lors de l'enregistrement de la correspondance SSO.
";
}
}
}
}
}
} // elseif...
else {
if (mb_strlen($_POST['new_login']) > $longmax_login) {
$msg.="L'identifiant est trop long, il ne doit pas dépasser ".$longmax_login." caractères.";
}
else {
$msg.="L'identifiant de l'utilisateur doit être constitué uniquement de lettres et de chiffres !";
}
}
if($temoin_ajout_ou_modif_ok=="y"){
// pour le module trombinoscope
// Envoi de la photo
$i_photo = 0;
$calldata_photo = mysqli_query($GLOBALS["mysqli"], "SELECT * FROM utilisateurs WHERE (login = '".$user_login."')");
// En multisite, on ajoute le répertoire RNE
if (isset($GLOBALS['multisite']) AND $GLOBALS['multisite'] == 'y') {
// On récupère le RNE de l'établissement
$repertoire="../photos/".$_COOKIE['RNE']."/personnels/";
}else{
$repertoire="../photos/personnels/";
}
//$repertoire = '../photos/personnels/';
$code_photo = md5(mb_strtolower($user_login));
if(isset($_POST['suppr_filephoto']) and $valide_form === 'oui' ){
if($_POST['suppr_filephoto']=='y'){
if(unlink($repertoire.$code_photo.".jpg")){
$msg.="La photo ".$repertoire.$code_photo.".jpg a été supprimée. ";
}
else{
$msg.="Echec de la suppression de la photo ".$repertoire.$code_photo.".jpg ";
}
}
}
// filephoto
if(isset($_FILES['filephoto']['tmp_name'])){
$filephoto_tmp=$_FILES['filephoto']['tmp_name'];
if ( $filephoto_tmp != '' and $valide_form === 'oui' ){
$filephoto_name=$_FILES['filephoto']['name'];
$filephoto_size=$_FILES['filephoto']['size'];
$filephoto_type=$_FILES['filephoto']['type'];
// Tester la taille max de la photo?
if ((preg_match('/jpg$/',strtolower($filephoto_name)) || preg_match('/jpeg$/',strtolower($filephoto_name))) && ($filephoto_type == "image/jpeg" || $filephoto_type == "image/pjpeg")) {
if(is_uploaded_file($filephoto_tmp)){
$dest_file = $repertoire.$code_photo.".jpg";
$source_file = $filephoto_tmp;
$res_copy=copy("$source_file" , "$dest_file");
if($res_copy){
$msg.="Mise en place de la photo effectuée.";
if (getSettingValue("active_module_trombinoscopes_rd")=='y') {
// si le redimensionnement des photos est activé on redimensionne
if (getSettingValue("active_module_trombinoscopes_rt")!='')
$redim_OK=redim_photo($dest_file,getSettingValue("l_resize_trombinoscopes"), getSettingValue("h_resize_trombinoscopes"),getSettingValue("active_module_trombinoscopes_rt"));
else
$redim_OK=redim_photo($dest_file,getSettingValue("l_resize_trombinoscopes"), getSettingValue("h_resize_trombinoscopes"));
if (!$redim_OK) $msg.=" Echec du redimensionnement de la photo.";
}
}
else{
$msg.="Erreur lors de la mise en place de la photo.";
}
}
else{
$msg.="Erreur lors de l'upload de la photo.";
}
}
else {
$msg.="Erreur : seuls les fichiers ayant l'extension .jpg ou .jpeg sont autorisés.";
}
}
}
// si suppression de la fiche il faut supprimer la photo
// fin pour le module trombinoscope
}
}
}
elseif(isset($_POST['suppression_assoc_user_groupes'])) {
check_token();
$user_group=isset($_POST["user_group"]) ? $_POST["user_group"] : array();
$call_classes = mysqli_query($GLOBALS["mysqli"], "SELECT g.id group_id, g.name name, c.classe classe, c.id classe_id " .
"FROM j_groupes_professeurs jgp, j_groupes_classes jgc, groupes g, classes c WHERE (" .
"jgp.login = '$user_login' and " .
"g.id = jgp.id_groupe and " .
"jgc.id_groupe = jgp.id_groupe and " .
"c.id = jgc.id_classe) order by jgc.id_classe");
$nb_classes = mysqli_num_rows($call_classes);
if($nb_classes>0) {
$k = 0;
$user_classe=array();
while ($k < $nb_classes) {
$user_classe['classe_nom_court'] = old_mysql_result($call_classes, $k, "classe");
$user_classe['matiere_nom_court'] = old_mysql_result($call_classes, $k, "name");
$user_classe['classe_id'] = old_mysql_result($call_classes, $k, "classe_id");
$user_classe['group_id'] = old_mysql_result($call_classes, $k, "group_id");
if(!in_array($user_classe['group_id'],$user_group)) {
$sql="DELETE FROM j_groupes_professeurs WHERE id_groupe='".$user_classe['group_id']."' AND login='$user_login';";
//echo "$sql
\n";
$suppr=mysqli_query($GLOBALS["mysqli"], $sql);
if($suppr) {
$msg.="Suppression de l'association avec l'enseignement ".$user_classe['matiere_nom_court']." en ".$user_classe['classe_nom_court']."
\n";
}
else {
$msg.="ERREUR lors de la suppression de l'association avec l'enseignement ".$user_classe['matiere_nom_court']." en ".$user_classe['classe_nom_court']."
\n";
}
}
$k++;
}
unset($user_classe);
}
}
// On appelle les informations de l'utilisateur pour les afficher :
if (isset($user_login) and ($user_login!='')) {
$call_user_info = mysqli_query($GLOBALS["mysqli"], "SELECT * FROM utilisateurs WHERE login='".$user_login."'");
$user_auth_mode = old_mysql_result($call_user_info, "0", "auth_mode");
$user_nom = old_mysql_result($call_user_info, "0", "nom");
$user_prenom = old_mysql_result($call_user_info, "0", "prenom");
$user_civilite = old_mysql_result($call_user_info, "0", "civilite");
$user_statut = old_mysql_result($call_user_info, "0", "statut");
$user_email = old_mysql_result($call_user_info, "0", "email");
$user_etat = old_mysql_result($call_user_info, "0", "etat");
$date_verrouillage = old_mysql_result($call_user_info, "0", "date_verrouillage");
$user_numind = old_mysql_result($call_user_info, "0", "numind");
$user_type = old_mysql_result($call_user_info, "0", "type");
$call_matieres = mysqli_query($GLOBALS["mysqli"], "SELECT * FROM j_professeurs_matieres j WHERE j.id_professeur = '".$user_login."' ORDER BY ordre_matieres");
$nb_mat = mysqli_num_rows($call_matieres);
$k = 0;
while ($k < $nb_mat) {
$user_matiere[$k] = old_mysql_result($call_matieres, $k, "id_matiere");
$k++;
}
// Utilisateurs précédent/suivant:
$utilisateur_courant_trouve="n";
//$sql="SELECT login,nom,prenom FROM utilisateurs WHERE statut='$user_statut' ORDER BY nom,prenom";
//$sql="SELECT login,nom,prenom,statut FROM utilisateurs WHERE statut='$user_statut' AND etat='actif' ORDER BY statut, nom,prenom";
$sql="SELECT login,nom,prenom,statut FROM utilisateurs WHERE etat='actif' AND (statut='administrateur' OR statut='professeur' OR statut='cpe' OR statut='scolarite' OR statut='autre' OR statut='secours') ORDER BY statut, nom,prenom";
$res_liste_user=mysqli_query($GLOBALS["mysqli"], $sql);
if(mysqli_num_rows($res_liste_user)>0){
$login_user_prec="";
$login_user_suiv="";
$temoin_tmp=0;
$liste_options_user="";
$statut_prec="";
while($lig_user_tmp=mysqli_fetch_object($res_liste_user)){
if($lig_user_tmp->statut!=$statut_prec) {
if($statut_prec!="") {
$liste_options_user.="\n";
}
$liste_options_user.="\n";
// Si on désactive un compte, il n'est plus dans la liste SELECT
if($utilisateur_courant_trouve=="n") {
$liste_options_user="\n".$liste_options_user;
}
}
} else {
$nb_mat = 0;
if (isset($_POST['reg_civilite']))
$user_civilite = $_POST['reg_civilite'];
else
$user_civilite = 'M.';
$user_auth_mode = isset($_POST['reg_auth_mode']) ? $_POST['reg_auth_mode'] : "gepi";
if (isset($_POST['reg_nom'])) $user_nom = $_POST['reg_nom'];
if (isset($_POST['reg_prenom'])) $user_prenom = $_POST['reg_prenom'];
if (isset($_POST['reg_statut'])) $user_statut = $_POST['reg_statut'];
if (isset($_POST['reg_email'])) $user_email = $_POST['reg_email'];
if (isset($_POST['reg_etat'])) $user_etat = $_POST['reg_etat'];
if (isset($_POST['reg_numind'])) $user_numind = $_POST['reg_numind'];
if (isset($_POST['reg_type'])) $user_type = $_POST['reg_type'];
if ((isset($_POST['matiere_0']))&&($_POST['matiere_0']!='')) {
$user_matiere[0]=$_POST['matiere_0'];
}
}
$avec_js_et_css_edt="y";
$themessage = 'Des informations ont été modifiées. Voulez-vous vraiment quitter sans enregistrer ?';
$themessage2 = "Êtes-vous sûr de vouloir effectuer cette opération ?\\n Actuellement cet utilisateur se connecte à GEPI en s\'authentifiant auprès d\'un SSO.\\n En attribuant un mot de passe, vous lancerez la procédure, qui génèrera un mot de passe local. Cet utilisateur ne pourra donc plus se connecter à GEPI via le SSO mais uniquement localement.";
//**************** EN-TETE *****************
//$titre_page = "Gestion des utilisateurs | Modifier un utilisateur";
$titre_page = "Création/modification d'un personnel";
require_once("../lib/header.inc.php");
//**************** FIN EN-TETE *****************
//debug_var();
?>
";
//echo "\$login_user_suiv=$login_user_suiv
";
//============================================================================================================
// Div pour l'affichage de l'EDT
if((getSettingAOui('autorise_edt_tous'))||
((getSettingAOui('autorise_edt_admin'))&&($_SESSION['statut']=='administrateur'))) {
$titre_infobulle="EDT de ";
$texte_infobulle="";
$tabdiv_infobulle[]=creer_div_infobulle('edt_prof',$titre_infobulle,"",$texte_infobulle,"",40,0,'y','y','n','n');
//https://127.0.0.1/steph/gepi_git_trunk/edt_organisation/index_edt.php?login_edt=boireaus&type_edt_2=prof&no_entete=y&no_menu=y&lien_refermer=y
function affiche_lien_edt_prof($login_prof, $info_prof) {
return " ";
}
echo "
\n";
}
else {
function affiche_lien_edt_prof($login_prof, $info_prof) {
return "";
}
}
//============================================================================================================
echo "
Attention ! Un accès LDAP en écriture a été défini. En conséquence, toute modification effectuée sur un utilisateur ayant pour mode d'authentification LDAP ou SSO sera répercutée sur le LDAP (cela inclut la création du mot de passe, pour les nouveaux utilisateurs). Si l'utilisateur existe déjà dans l'annuaire LDAP, ses informations ne seront pas mises à jour dans l'annuaire mais il sera tout de même créé dans la base Gepi. En cas de modification d'un utilisateur existant à la fois dans l'annuaire et dans Gepi, les modifications seront répercutées sur l'annuaire LDAP.
"; } ?> 0) { echo "\n"; echo "\n"; } } echo "
\n"; if((isset($user_login))&&($journal_connexions=='n')) { echo "\n"; } if($journal_connexions=='y') { // Journal des connexions echo "\n"; if (isset($_POST['duree'])) { $duree = $_POST['duree']; } else { $duree = '7'; } journal_connexions($user_login,$duree,'modify_user'); } echo "
\n"; ?>